package top.zhangjianyong.tools.constant;

import org.springframework.context.annotation.Description;
import top.zhangjianyong.tools.entity.WaBill;

import java.math.BigDecimal;
import java.util.function.Function;

import static top.zhangjianyong.tools.function.WaBillModeFunctions.*;

/**
 * @author ： zhangjianyong
 * @date ： 2022/10/26 3:23 PM
 */
@Deprecated
public enum WaBillPayMode {
    ALI_01_01("支付宝", "其他", "信用借还", "解冻成功", ZERO),
    ALI_01_02("支付宝", "其他", "信用借还", "信用服务使用成功", ZERO),
    ALI_01_03("支付宝", "其他", "信用借还", "还款成功", ZERO),
    ALI_01_04("支付宝", "支出", "信用借还", "交易成功", ZERO),

    ALI_02_01("支付宝", "其他", "投资理财", "交易成功", ZERO),
    ALI_02_02("支付宝", "其他", "投资理财", "交易关闭", ZERO),
    ALI_02_03("支付宝", "收入", "投资理财", "交易成功", ZERO),
    ALI_02_04("支付宝", "支出", "投资理财", "交易成功", ZERO),

    ALI_03_01("支付宝", "其他", "文化休闲", "退款成功", INCOME),
    ALI_03_02("支付宝", "支出", "文化休闲", "交易成功", PAY),
    ALI_03_03("支付宝", "支出", "文化休闲", "交易关闭", ZERO),

    ALI_04_01("支付宝", "其他", "退款", "退款成功", INCOME),

    ALI_05_01("支付宝", "其他", "转账红包", "交易成功", ZERO),
    ALI_05_02("支付宝", "收入", "转账红包", "交易成功", ZERO),
    ALI_05_03("支付宝", "支出", "转账红包", "交易成功", ZERO),
    ALI_05_04("支付宝", "支出", "转账红包", "领取中", ZERO),

    ALI_06_01("支付宝", "其他", "亲友代付", "退回成功", ZERO),
    ALI_06_02("支付宝", "支出", "亲友代付", "交易成功", PAY),
    ALI_06_03("支付宝", "支出", "亲友代付", "代付成功", PAY),

    ALI_07_01("支付宝", "其他", "账户存取", "交易成功", ZERO),

    ALI_08_01("支付宝", "其他", "充值缴费", "交易关闭", ZERO),
    ALI_08_02("支付宝", "支出", "充值缴费", "交易成功", PAY),

    ALI_09_01("支付宝", "收入", "收入", "交易成功", INCOME),

    ALI_10_01("支付宝", "收入", "保险", "交易成功", INCOME),
    ALI_10_02("支付宝", "支出", "保险", "交易关闭", ZERO),

    ALI_11_01("支付宝", "支出", "医疗健康", "支付成功", PAY),
    ALI_11_02("支付宝", "支出", "医疗健康", "交易成功", PAY),
    ALI_11_03("支付宝", "支出", "医疗健康", "交易关闭", ZERO),

    ALI_12_01("支付宝", "支出", "生活服务", "交易成功", PAY),
    ALI_12_02("支付宝", "其他", "生活服务", "交易关闭", ZERO),
    ALI_12_03("支付宝", "其他", "生活服务", "信用服务使用成功", ZERO),


    ALI_13_01("支付宝", "支出", "数码电器", "交易成功", PAY),
    ALI_13_02("支付宝", "支出", "数码电器", "交易关闭", ZERO),


    ALI_14_01("支付宝", "支出", "服饰装扮", "交易成功", PAY),
    ALI_14_02("支付宝", "支出", "服饰装扮", "支付成功", PAY),
    ALI_14_03("支付宝", "支出", "服饰装扮", "交易关闭", ZERO),


    ALI_21_01("支付宝", "支出", "交通出行", "交易成功", PAY),
    ALI_21_02("支付宝", "支出", "交通出行", "交易关闭", ZERO),

    ALI_22_01("支付宝", "支出", "日用百货", "交易成功", PAY),
    ALI_22_02("支付宝", "支出", "日用百货", "交易关闭", ZERO),

    ALI_23_01("支付宝", "支出", "母婴亲子", "交易成功", PAY),
    ALI_23_02("支付宝", "支出", "母婴亲子", "交易关闭", ZERO),
    ALI_23_03("支付宝", "支出", "母婴亲子", "等待确认收货", PAY),

    ALI_24_01("支付宝", "支出", "公共服务", "交易成功", PAY),

    ALI_25_01("支付宝", "支出", "餐饮美食", "交易成功", PAY),

    ALI_26_01("支付宝", "支出", "商业服务", "交易成功", PAY),
    ALI_26_02("支付宝", "支出", "商业服务", "支付成功", PAY),

    ALI_27_01("支付宝", "支出", "家居家装", "交易成功", PAY),
    ALI_27_02("支付宝", "支出", "家居家装", "支付成功", PAY),
    ALI_27_03("支付宝", "支出", "家居家装", "交易关闭", ZERO),

    ALI_28_01("支付宝", "支出", "教育培训", "交易成功", PAY),

    ALI_29_01("支付宝", "支出", "宠物", "交易成功", PAY),

    ALI_31_01("支付宝", "支出", "爱车养车", "交易成功", PAY),

    ALI_32_01("支付宝", "支出", "美容美发", "交易成功", PAY),
    ALI_32_02("支付宝", "支出", "美容美发", "支付成功", PAY),

    ALI_33_01("支付宝", "支出", "酒店旅游", "交易成功", PAY),

    ALI_35_01("支付宝", "支出", "互助保障", "交易成功", PAY),

    ALI_36_01("支付宝", "支出", "住房物业", "交易成功", PAY),

    ALI_37_01("支付宝", "支出", "其他", "交易成功", PAY),


    WX_01_01("微信", "/", "零钱提现", "提现已到账", ZERO),

    WX_01_02("微信", "/", "转入零钱通-来自零钱", "支付成功", ZERO),

    WX_02_01("微信", "收入", "商户消费", "充值成功", INCOME),//彩票兑奖
    WX_02_02("微信", "支出", "商户消费", "已全额退款", PAY),
    WX_02_03("微信", "支出", "商户消费", "支付成功", PAY),
    WX_02_04("微信", "支出", "商户消费", "已退款", PAY),//原始账单状态：已退款￥xx.xx


    WX_03_01("微信", "收入", "转账", "已存入零钱", INCOME),
    WX_03_02("微信", "支出", "转账", "对方已收钱", PAY),
    WX_03_03("微信", "支出", "转账", "对方已退还", PAY),
    WX_03_04("微信", "支出", "转账", "已全额退款", PAY),


    WX_04_01("微信", "收入", "二维码收款", "已收钱", INCOME),

    WX_07_01("微信", "收入", "微信红包", "已存入零钱", INCOME),
    WX_07_02("微信", "支出", "微信红包（单发）", "支付成功", PAY),
    WX_07_03("微信", "支出", "微信红包（单发）", "已全额退款", PAY),
    WX_07_04("微信", "支出", "微信红包（群红包）", "支付成功", PAY),
    WX_07_05("微信", "支出", "微信红包（群红包）", "已退款", PAY),

    WX_09_01("微信", "收入", "退款", "已全额退款", INCOME),
    WX_09_02("微信", "收入", "退款", "已退款", INCOME),//原始账单状态：已退款￥xx.xx

    WX_11_01("微信", "支出", "亲属卡交易", "支付成功", PAY),
    WX_11_02("微信", "支出", "亲属卡交易", "已全额退款", PAY),
    WX_11_03("微信", "支出", "亲属卡交易", "已退款", PAY),//原始账单状态：已退款￥xx.xx

    WX_12_01("微信", "支出", "扫二维码付款", "已转账", PAY),

    WX_14_01("微信", "支出", "群收款", "支付成功", PAY),
    WX_15_01("微信", "支出", "群收款", "支付成功", PAY),
    WX_15_02("微信", "支出", "群收款", "已全额退款", PAY),

    ;

    public final String platform;
    public final String inOrOut;
    public final String type;

    public final String state;
    private final Function<WaBill, BigDecimal> consumer;

    WaBillPayMode(String platform, String inOrOut, String type, String state, Function<WaBill, BigDecimal> consumer) {
        this.platform = platform;
        this.inOrOut = inOrOut;
        this.type = type;
        this.state = state;
        this.consumer = consumer;
    }

    public BigDecimal amt(WaBill waBill) {
        return consumer.apply(waBill);
    }
}
